package pe.gob.mimp.web.controller;

import java.util.List;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpSession;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Controller;
import org.springframework.ui.Model;
import org.springframework.validation.BindingResult;
import org.springframework.web.bind.annotation.*;

import pe.gob.mimp.model.*;
import pe.gob.mimp.model.web.EntidadWeb;
import pe.gob.mimp.service.*;
import pe.gob.mimp.validator.EntidadValidator;

@Controller
@RequestMapping(value = "/entidad")
public class EntidadController {
	@Autowired
	private CombosService combos;
	@Autowired
	private EntidadService entidadService;
	@Autowired
	private MenuUsuarioService menuUsuarioService;
	private Long idEntidad;

	public Long getIdEntidad() {
		return idEntidad;
	}

	public void setIdEntidad(Long idEntidad) {
		this.idEntidad = idEntidad;
	}

	@RequestMapping(method = RequestMethod.GET)
	public String showCasoForm(
			Model model,
			@RequestParam(value = "idEntidad", required = false) Long idEntidad,
			HttpServletRequest request) {
		EntidadWeb entidadWeb = new EntidadWeb();
		HttpSession session = request.getSession();
		List<MenuUsuario> menu;

		if (session.getAttribute("login") == null) {
			return "redirect:login";
		}
		menu = menuUsuarioService.getMenuUsuarioPorUserName((String) session.getAttribute("login"));
		if (idEntidad != null) {
			entidadWeb.setEntidad(entidadService.getEntidadPorId(idEntidad));
			entidadWeb.setIdTipoentidad(entidadWeb.getEntidad()
					.getIdTipoEntidad().getIdTabla());
			entidadWeb.setDescripcion(entidadWeb.getEntidad().getDescripcion());
			this.idEntidad = idEntidad;
		}
		entidadWeb.setTipoEntidad(combos.getListaTipoEntidad());
		model.addAttribute("entidadWeb", entidadWeb);
                if (idEntidad != null) {
                    model.addAttribute("edita", true);
                }else{
                    model.addAttribute("edita", false);
                }
		model.addAttribute("menu", menu);
		model.addAttribute("opciones", menu);
		return "entidad";
	}

	@RequestMapping(value = "/test", method = RequestMethod.GET)
	public String test() {
		System.out.println("/entidad/create");
		return "redirect:/entidad";
	}

	@RequestMapping(method = RequestMethod.POST)
	public String grabaFormulario(Model model,EntidadWeb entidadWeb) {
            Entidad entidad = new Entidad();
            entidad = entidadWeb.getEntidad();
            if (this.idEntidad != null) {
                    entidad.setIdEntidad(this.idEntidad);
            }
            TablaParametrica idTipoentidad = combos
                            .getTablaParametricaPorId(entidadWeb.getIdTipoentidad());
            entidad.setIdTipoEntidad(idTipoentidad);
            entidad.setDescripcion(entidadWeb.getDescripcion().toUpperCase());
            entidadService.saveEntidad(entidad);
            idEntidad = null;
            return "redirect:entidad";
        }

	@RequestMapping(value = "/listado", method = RequestMethod.GET)
	public @ResponseBody
	List<Entidad> getMotivoss(HttpServletRequest request) {
		List<Entidad> lista = entidadService.listadoEntidades();
		HttpSession session = request.getSession();

		if (session.getAttribute("login") == null) {
			return null;
		}
		System.out.println("sdsd:" + lista.size());
		return lista;
	}
}
